package com.weishe.hive;


import java.util.List;

import org.apache.hadoop.hive.ql.exec.UDF;

import com.weishe.util.PageIDChecker;
import com.weishe.util.Utils;
import com.weishe.util.PageIDChecker.Page_Pattern;

/**
 * 获取页面类型，类型与数据库page_type 中定义的Page_ID 一致，非法URL或空URL时返回null
 *
 */
public class GetPageID extends UDF  {
	
	/**
	 * 获取指定url 对应的一级页面类型
	 * @param s
	 * create temporary function getpageid as 'com.bjsxt.hive.GetPageID'
	 * @return -1表示内部未知页，0表示外部页
	 */
	public Integer evaluate(String url) {
		if (url == null || "".equals(url)) {
			return null;
		}
		url = url.trim() ;
		List<Page_Pattern> patterns = PageIDChecker.patterns;
		for(Page_Pattern pat:patterns){
			if(pat.match(url)){
				return pat.id;
			}			
		}
		String host = Utils.getHostFromURL(url);
		boolean bExternal =true;
		for(String h : Utils.SITE_HOSTS){
			if(h.equals(host)){
				bExternal=false;
				break;
			}
		}			
		//外部页直接返回0		
		if (bExternal){	
			return 0;
		}
		return -1;
	}	
	

	public static void main(String[] argc){
		GetPageID gh=new GetPageID(); 
		String url = "http://search.yhd.com/c0-0/k%E4%BA%91%E5%8D%97%E7%99%BD%E8%8D%AF" ;
		System.out.println(gh.evaluate(url));
//		System.out.println(PageTypeUtils.isKeywordSearch(url));
	}
}
